In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Lata pracy w inżynierii oprogramowania mogą spowodować ciężkie komplikacje psychiczne. Dlatego też programista Bajtazar postanowił porzucić dotychczasowe zajęcie i zaczął się przyglądać losowym ofertom zatrudnienia. Najbardziej zainteresowała go oferta pracy na farmie trudniącej się hodowlą ryb. "Fajna sprawa" - pomyślał Bajtazar - "i w sumie rybki to całkiem przyjemne stworzonka". Bajtazar zaaplikował o interesującą go posadę i przeszedł pozytywnie proces rekrutacji, a dzisiaj po raz pierwszy przyszedł do nowej pracy.
Nowy szef już zdążył przydzielić Bajtazarowi pierwsze zadanie. Musi on odizolować jeden zbiornik wodny od drugiego. Bajtazar przyjrzał się już sposobowi, w jaki zbiorniki są połączone, i oto co wywnioskował.
Dwa zbiorniki wodne są połączone pewną liczbą kanałów. Na każdym kanale znajdują się dwie śluzy. Kanał jest otwarty wtedy i tylko wtedy, gdy znajdujące się na nim śluzy są obie otwarte. Śluzy można otwierać i zamykać za pomocą przełączników. Jeden przełącznik może być podłączony do wielu śluz, ale jedna śluza jest zawsze podłączona do dokładnie jednego przełącznika. Może się tak zdarzyć, że dwie śluzy znajdujące się na jednym kanale są podłączone do jednego przełącznika, a także że jakiś przełącznik nie jest podłączony do żadnej śluzy.
Przykład zawierający trzy kanały i dwa przełączniki.
Bajtazar poeksperymentował trochę z przełącznikami i doszedł do wniosku, że doświadczenie programistyczne może mu się przydać do wykonania zadania. Napisz program, który na podstawie konfiguracji śluz i przełączników sprawdzi, czy da się zamknąć wszystkie kanały, i jeżeli tak, to wyznaczy stan każdego przełącznika w jednej z takich konfiguracji.
Pierwszy wiersz standardowego wejścia zawiera dwie liczby całkowite
oraz
, oznaczające
odpowiednio liczbę kanałów i liczbę przełączników.
Przełączniki są ponumerowane od
do
.
Dodatkowo, w testach wartych co najmniej
punktów,
nie będzie przekraczało
, a
nie będzie większe niż
.
Kolejne wierszy zawiera opisy kanałów; każdy kanał jest opisany
w osobnym wierszu za pomocą czterech liczb całkowitych:
,
,
,
.
Liczby
i
reprezentują przełączniki (
), które
sterują śluzami danego kanału.
Liczby
i
mogą przyjmować wartości
lub
; opisują one
wspomniane sposoby sterowania:
oznacza, że śluza jest zamknięta wtedy i tylko wtedy, gdy
-ty
przełącznik jest wyłączony, natomiast
oznacza, że śluza jest
zamknięta wtedy i tylko wtedy, kiedy
-ty przełącznik jest włączony.
Jeżeli da się zamknąć wszystkie kanały, to na standardowe wyjście powinno
zostać wypisanych wierszy.
-ty z nich powinien zawierać
, jeżeli
-ty przełącznik powinien
być wyłączony, a
, jeżeli włączony.
Jeżeli istnieje więcej niż jedno poprawne rozwiązanie, Twój program
powinien wypisać którekolwiek z nich.
Jeżeli nie jest możliwe zamknięcie wszystkich kanałów, to Twój program powinien wypisać jeden wiersz, zawierający jedno słowo IMPOSSIBLE.
Dla danych wejściowych:
3 2 1 0 2 1 1 0 2 0 1 1 2 1
poprawną odpowiedzią jest:
0 1
natomiast dla danych wejściowych:
2 1 1 0 1 0 1 1 1 1
poprawnym wynikiem jest:
IMPOSSIBLE
Pierwszy z przykładów odpowiada obrazkowi z treści zadania.
Autor zadania: Linas Petrauskas.